﻿jQuery.fn.MHTReapeater = function () {

    if (arguments.length == 0) return [];
    var args = arguments[0] || {};

    var dataSource = args.dataSource;
    var headerTemplate = args.headerTemplate;
    var itemTemplate = args.itemTemplate;
    var separatorTemplate = args.separatorTemplate;
    var footerTemplate = args.footerTemplate;
    var EmptyData = args.EmptyData;




    var o = "", i = 0;
    if (jQuery.isArray(dataSource)) {
        var q = dataSource.length;
        // Append headerTemplate
        if (!jQuery.isNull(headerTemplate))
            o += headerTemplate;
        for (var i = 0; i < q; i++) {
            var new_item = itemTemplate;
            $.each(dataSource[i], function (key, value) {
                if (itemTemplate.indexOf('#' + key + '#') >= 0)
                    new_item =
                    new_item.replace('#' + key + '#', value);

            });
            o += new_item;
            if (!jQuery.isNull(separatorTemplate))
                o += separatorTemplate;
            new_item = "";

        }
        // Append footerTemplate
        if (!jQuery.isNull(footerTemplate))
            o += footerTemplate;
        $(this[0]).append(o);

    }
    else {
        if (!jQuery.isNull(EmptyData)) {
            o = EmptyData;
            $(this[0]).append(o);
        }
    }
};

String.format = function () {
    var s = arguments[0] || {}, i = 0;
    for (; i < arguments[1].length; i++) {
        var reg = new RegExp("\\{" + i + "\\}", "gm");
        s = s.replace(reg, arguments[1][i]);
    }
    return s;
}

jQuery.extend({
    // Utilities
    isArray: function (v) {
        return typeof (v) == 'object' &&
            v != null &&
            typeof (v.length) == 'number';
    },
    isNull: function (o) {
        if (o == null && o == undefined) {
            return true;
        }
        return false
    }
});